package com.gxa.mall.util;

import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.servlet.HandlerInterceptor;


import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 配置拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 拦截器和过滤器的区别
     * 1.拦截器针对访问控制器进行拦截
     * 及 @RequestMapping(value = {"/test"})
     * 简而言说就是访问方法的url
     * 应用：可以作为权限的判断，
     * 2.过滤器则是针对全局的请求
     * 包括：css/js/html/jpg/png/git/...
     * 及静态文件
     * 20200417 23:13
     */

         /*
       预处理--进入到控制器之前执行
       返回false 不会进入到控制器
       返回true 进入到控制
     */
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            String token=request.getHeader("token");

            //由于第一次登录token还没保存
            if (token==null){
               token= (String) request.getSession().getAttribute("token");
               /* Cookie[] cookie= request.getCookies();
                token= cookie[0].getValue();*/
            }
            boolean res =  JWTUtil.verify(token);
            if(!res){//res值为false, 向前端响应一个401状态码
                response.getWriter().print(401);
                response.sendRedirect("/beauty/succes.html");

            }
            return res;
        }

    }